From f20744517f7b8186a0b5494a399aa8e6230717c7 Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Wed, 2 Dec 2009 08:44:40 +0000 Subject: [PATCH] libxenlight: two small fixes - set the domid of the guest and not the one of the stubdom in the libxl_device_model_starting returned to the user; - check that the length of the two strings matches in libxl_name_to_domid, otherwise we can get a match for two different domains that have the same initial part of the name. Signed-off-by: Stefano Stabellini --- tools/libxl/libxl.c | 2 +- tools/libxl/libxl_utils.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 10f4d8a4a3..858c17052e 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -842,7 +842,7 @@ retry_transaction: if (starting_r) { *starting_r = libxl_calloc(ctx, sizeof(libxl_device_model_starting), 1); - (*starting_r)->domid = domid; + (*starting_r)->domid = info->domid; (*starting_r)->dom_path = libxl_xs_get_dompath(ctx, info->domid); (*starting_r)->for_spawn = NULL; } diff --git a/tools/libxl/libxl_utils.c b/tools/libxl/libxl_utils.c index 6c4b04fd0f..4a8f44f814 100644 --- a/tools/libxl/libxl_utils.c +++ b/tools/libxl/libxl_utils.c @@ -68,7 +68,7 @@ int libxl_name_to_domid(struct libxl_ctx *ctx, char *name, uint32_t *domid) for (i = 0; i < num; i++) { snprintf(path, sizeof(path), "/local/domain/%s/name", l[i]); domname = xs_read(ctx->xsh, XBT_NULL, path, &len); - if (domname != NULL && !strncmp(domname, name, len)) { + if (domname != NULL && len == strlen(name) && !strncmp(domname, name, len)) { int domid_i = atoi(l[i]); for (j = 0; j < nb_domains; j++) { if (dominfo[j].domid == domid_i) { -- 2.30.2